package educar.controllers;

import educar.gui.AdminView;
import educar.gui.IView;
import educar.models.Facultad;
import educar.models.facultadNotFound;

public class AdminFacultadController implements IController
{
    AdminView view;

    public void setView(IView view)
    {
        this.view = (AdminView)view;
        actualizarFacultades();
    }

    public void processItemList(String name, String item)
    {
        Facultad facultad = null;
        try
        {
            facultad = Facultad.getFacultadbyId(name);
        }
        catch (facultadNotFound e)
        {
            e.printStackTrace();
        }

        view.setFacultadCodigo(facultad.getCodigoFacultad());
        view.setFacultadNombre(facultad.getDescripcionFacultad());
    }

    public void process(String model)
    {
        if (model.compareTo(AdminView.RESET) == 0)
            reset();
        else if (model.compareTo(AdminView.ACTUALIZAR) == 0)
            update();
        else if (model.compareTo(AdminView.GUARDARNUEVO) == 0)
            guardar();
        else if (model.compareTo(AdminView.BORRAR) == 0)
            borrar();
    }

    private void reset()
    {
        view.setFacultadCodigo("");
        view.setFacultadNombre("");
    }

    private void update()
    {
        if (view.getFacultadNombre().trim().isEmpty())
        {
            view.present("Ingrese un nombre");
            return;
        }
        try
        {
            Facultad c = Facultad.getFacultadbyId(view.getFacultadCodigo());
            c.setDescripcion(view.getFacultadNombre());
            c.update();
        }
        catch (facultadNotFound e)
        {
            view.present("Actualizacion no valida");
        }
    }

    private void guardar()
    {
        if (view.getFacultadNombre().trim().isEmpty())
        {
            view.present("Ingrese un nombre");
            return;
        }
        Facultad c = new Facultad(view.getFacultadNombre());
        if (!c.save())
            view.present("Error al guardar");
        else
        {
            view.setFacultadCodigo(c.getCodigoFacultad());
            actualizarFacultades();
        }
    }

    private void actualizarFacultades()
    {
        String[] f = Facultad.getAllCodigosArray();
        ((AdminView)view).setFacultades(f);
    }

    private void borrar()
    {
        try
        {
            Facultad facultad = Facultad.getFacultadbyId(view.getFacultadCodigo());
            facultad.destroy();
            reset();
            actualizarFacultades();
        }
        catch (facultadNotFound e)
        {
            view.present("Facultad inexistente");
        }
    }
}
